package com.siyougame;

import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.poi.word.Word07Writer;
import org.apache.poi.xwpf.usermodel.Document;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.awt.*;
import java.io.*;
import java.net.URL;
import java.util.Arrays;
import java.util.List;

public class WordExportWithImage {
    public static void main(String[] args) {
        // 创建 Word07Writer
        Word07Writer writer = new Word07Writer();
        // 创建字体对象（假设使用“微软雅黑”，大小 14 号，加粗）
        Font font = new Font("微软雅黑", Font.BOLD, 14);
        // 1. 添加文本内容
        writer.addText(font,"这是一个文本段落");

        // 2. 处理图片（支持多个）
        List<String> imageUrls = Arrays.asList(
                "http://zhhnt.oss-cn-beijing.aliyuncs.com/2025/02/11/image_1739259201494.jpg",
                "http://zhhnt.oss-cn-beijing.aliyuncs.com/2025/02/11/image_1739259495690.jpg"
        );
        // 获取 XWPFDocument 进行更复杂的操作
        try {
            for (String imageUrl : imageUrls) {
                addImageToWord(writer.getDoc(), imageUrl);
            }

            // 3. 写出 Word 文件
            FileOutputStream out = new FileOutputStream("output.docx");
            writer.flush(out);
            writer.close();
            System.out.println("Word 文件生成成功！");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 下载图片并插入到 Word 文档中
     */
    public static void addImageToWord(org.apache.poi.xwpf.usermodel.XWPFDocument doc, String imageUrl) {
        try {
            // 读取图片流
            URL url = URLUtil.url(imageUrl);
            InputStream imageStream = url.openStream();

            // 创建段落
            XWPFParagraph paragraph = doc.createParagraph();
            XWPFRun run = paragraph.createRun();

            // 插入图片
            run.addPicture(imageStream, Document.PICTURE_TYPE_JPEG, "image.jpg",
                    300 * 9525, 200 * 9525); // 这里是图片宽高（单位 EMU = 1/914400 英寸）

            imageStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
